//******************************************************************************
//Copyright(C) 2020-2021 zhejiang zhida dianzikeji Co., Ltd
//浙江智达电子科技有限公司
//File name:      variable.h
//Author:         zzg
//Version:        Ver0.1
//Date:           2021-4-25
//Description:    全局头文件调用/全局宏定义声明/全局变量声明
//History:
//******************************************************************************

#ifndef __ONEWIRE_DENG_PROTOCOL_DRV_H__
#define __ONEWIRE_DENG_PROTOCOL_DRV_H__

#include <mof_stdint.h>

typedef struct
{
	uint8_t SendEnSw;
	uint8_t Busy;
	uint8_t ReadPtr;
	uint8_t WritePtr;
	uint8_t ReadLength;
	uint8_t ReadTimeout;
	uint8_t WriteLength;
	uint8_t Reading;
	uint8_t Reading_HighTimerCount;
	uint8_t Reading_LowTimerCount;
	uint8_t Reading_BaseTimerCount;	
	uint8_t Reading_BitCount;
	uint8_t Read_IO;
	uint8_t Read_IO_Last;	
	uint8_t Writing;
	uint8_t Writing_BaseTimerCount;
	uint8_t Writing_BitCount;
	uint8_t Write_IO;
	uint8_t Bidir_IO_Switch;
	uint8_t *p_ReadBuffer;
	uint8_t *p_WriteBuffer;
} mof_fix_length_onewire_deng_t;


#define SEND_BIT_WIDTH_TIME 			    20	//BIT总波时间。
#define SEND_LONG_WAVE_TIME 			    15	//长波时间。
#define SEND_MEDIUM_WAVE_TIME 		    10	//中波时间。
#define SEND_SHORT_WAVE_TIME 			    5	//短波时间。
#define SEND_DEAD_ZREA_TIME 			    100	//死区时间。

#define SEND_HALF_BIT_WIDTH_TIME 			    10	//BIT总波时间。
#define SEND_HALF_LONG_WAVE_TIME 			    7	//长波时间。
#define SEND_HALF_MEDIUM_WAVE_TIME 		    5	//中波时间。
#define SEND_HALF_SHORT_WAVE_TIME 			  3	//短波时间。
#define SEND_HALF_DEAD_ZREA_TIME 			    50	//死区时间。

extern void onewire_fixed_length_reset_rx(mof_fix_length_onewire_deng_t * p_onewire);
//extern void onewire_fixed_length_in_isr(void);
extern void onewire_fixed_length_init(mof_fix_length_onewire_deng_t * p_onewire,uint8_t *sendbuf,uint8_t *recvbuf,uint8_t recv_len);
extern void onewire_fixed_length_send(mof_fix_length_onewire_deng_t * p_onewire,uint8_t writelength);//,uint8_t readlength)
extern void onewire_fixed_length_tx_isr(mof_fix_length_onewire_deng_t * p_onewire);
extern void onewire_fixed_length_rx_isr(mof_fix_length_onewire_deng_t * p_onewire);

#endif


